home *** CD-ROM | disk | FTP | other *** search
- /****************************************************************/
- /* code copyright 1995-1996 Andrew Johnson - ALL RIGHTS RESERVED*/
- /* ajohnson@eecs.uic.edu */
- /* */
- /* Electronic Visualization Lab (M/C 154) */
- /* University of Illinois at Chicago */
- /* 851 South Morgan St. Room 1120 SEO */
- /* Chicago, IL 60607-7053 */
- /* */
- /* (312) 996-3002 (312) 413-7585 FAX */
- /***********************************************************************/
- /* objects.c v 1.3 */
- /* routines to build the objects for battalion */
- /***********************************************************************/
-
- #include "battalion.h"
-
- /*************/
- /* colours */
- /*************/
-
- extern float colorolive[4];
- extern float planeGreen[4];
- extern float planeGreen2[4];
- extern float planeGreen3[4];
- extern float colorgreen[4];
-
- extern float colorblack[4];
-
- extern float colorred[4];
- extern float colorred_50[4];
- extern float colorred2[4];
- extern float colorred3[4];
-
- extern float colormaserblue[4];
- extern float colormaserblue2[4];
-
- extern float colorwhite[4];
- extern float colorwhite2[4];
-
- extern float colorsnow[4];
- extern float colorsnow2[4];
-
- extern float colorgrey1[4];
- extern float colorgrey1_50[4];
- extern float colorgrey2[4];
- extern float colorgrey3[4];
- extern float colorgrey3_50[4];
- extern float colorgrey4[4];
-
- extern float colorbrown[4];
- extern float colorbeige[4];
-
- extern float colorblue[4];
- extern float colorwater[4];
-
- extern float colorsnowvapour[4];
-
- extern float coloryellow[4];
- extern float colormaseryellow[4];
- extern float colororange[4];
-
- extern float healthGreen[4];
-
- extern float treeColor[4];
- extern float treeColor2[4];
-
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeMonsterLookat()
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- gluLookAt(0, PLANEY + 2.4, 0.1, 0, PLANEY, 1, 0, 1, 0);
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeOverviewLookat()
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- gluLookAt( 0, 0, 9 , 0, 0, 0, 0,1,0);
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* create object for tech's shell */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeshell2()
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makerbluecube(0, 0, 0, 0.04, 0.04, 0.04, colorred2);
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeWaterShell()
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makerbluecube(0, 0, 0, 0.02, 0.02, 0.02, colormaserblue2);
-
- glEndList();
- return(O);
- }
-
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeHeroShell()
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makerbluecube(0, 0, 0, 0.03, 0.03, 0.03, colormaserblue2);
-
- glEndList();
- return(O);
- }
-
-
-
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeTankShadow()
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- glColor4fv(colorblack);
-
- drawShadow (0, 0 , 0.16, 0.16);
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makePlaneShadow()
- {
- GLuint O;
-
- float p1[3] = {0.12, SHADOWS, 0.4};
- float p2[3] = {-0.12, SHADOWS, 0.4};
- float p3[3] = {0, SHADOWS, 0.8};
-
- float p4[3] = {0.4, SHADOWS, 0.1};
- float p5[3] = {-0.4, SHADOWS, 0.1};
- float p6[3] = {0, SHADOWS, 0.2};
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- glColor4fv(colorblack);
-
- drawShadow (0, -0.1 , 0.12, 0.5);
- drawShadow (0, 0 , 0.4, 0.1);
- drawShadow (0, -.5 , 0.2, 0.05);
-
- glBegin(GL_TRIANGLES);
- glVertex3fv(p1);
- glVertex3fv(p2);
- glVertex3fv(p3);
-
- glVertex3fv(p4);
- glVertex3fv(p5);
- glVertex3fv(p6);
- glEnd();
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeFighterShadow()
- {
- GLuint O;
-
- float p7[3] = {0.2, SHADOWS, 0.13};
- float p8[3] = {-0.2, SHADOWS, 0.13};
- float p9[3] = {0, SHADOWS, 0.33};
-
- float p10[3] = {0, SHADOWS, -0.33};
- float p11[3] = {-0.33, SHADOWS, 0};
- float p12[3] = {0.33, SHADOWS, 0};
-
- float p13[3] = {0.08, SHADOWS, 0.26};
- float p14[3] = {-0.08, SHADOWS, 0.26};
- float p15[3] = {0, SHADOWS, 0.54};
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- glColor4fv(colorblack);
-
- drawShadow (0, -0.066 , 0.08, 0.33);
- drawShadow (0, -.33 , 0.13, 0.033);
-
- glBegin(GL_TRIANGLES);
- glVertex3fv(p13);
- glVertex3fv(p14);
- glVertex3fv(p15);
-
- glVertex3fv(p7);
- glVertex3fv(p8);
- glVertex3fv(p9);
-
- glVertex3fv(p10);
- glVertex3fv(p11);
- glVertex3fv(p12);
- glEnd();
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* create object for an operational plain tank */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeTank()
- {
- GLuint O;
-
- /***************/
- /* tank barrel */
- /****************/
-
- float gun[8][3] = {
- -0.03, 0.280, 0.23,
- -0.03, 0.220, 0.24,
- 0.03, 0.220, 0.24,
- 0.03, 0.280, 0.23,
- 0.03, 0.225, 0.09,
- 0.03, 0.165, 0.09,
- -0.03, 0.165, 0.09,
- -0.03, 0.225, 0.09 };
-
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makeitPyr(11, colorgrey2, -0.12, 0.075, 0.0, 0.075, 0.075, 0.18);
- makeitPyr(11, colorgrey2, 0.12, 0.075, 0.0, 0.075, 0.075, 0.18);
-
- makercubenobtm(0.0, 0.15, 0.0, 0.15, 0.03, 0.225, colorolive);
- makercubenobtm(0.0, 0.195, 0.0, 0.09, 0.045, 0.09, colorgrey1);
-
- maker(gun, 0, 0, 0, 1, 1, 1, colorwhite, 1, 0.8, 0.66, 0.5);
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* create object for melting plain tank */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeSlagTank()
- {
- GLuint O;
-
- /***************/
- /* tank barrel */
- /****************/
-
- float gun[8][3] = {
- -0.03, 0.280, 0.23,
- -0.03, 0.220, 0.24,
- 0.03, 0.220, 0.24,
- 0.03, 0.280, 0.23,
- 0.03, 0.225, 0.09,
- 0.03, 0.165, 0.09,
- -0.03, 0.165, 0.09,
- -0.03, 0.225, 0.09 };
-
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makeitPyr(11, colorwhite, -0.12, 0.075, 0.0, 0.075, 0.075, 0.18);
- makeitPyr(11, colorwhite, 0.12, 0.075, 0.0, 0.075, 0.075, 0.18);
-
- makercubenobtm(0.0, 0.15, 0.0, 0.15, 0.03, 0.225, colorwhite);
- makercubenobtm(0.0, 0.195, 0.0, 0.09, 0.045, 0.09, colorwhite);
-
- maker(gun, 0, 0, 0, 1, 1, 1, colorwhite, 1, 0.8, 0.66, 0.5);
-
- glEndList();
- return(O);
- }
-
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeLauncherTank()
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makeitPyr(11, colorgrey2, -0.12, 0.075, 0.0, 0.075, 0.075, 0.18);
- makeitPyr(11, colorgrey2, 0.12, 0.075, 0.0, 0.075, 0.075, 0.18);
-
- makercubenobtm(0.0, 0.15, 0.0, 0.15, 0.03, 0.225, colorwhite);
-
- makercube(0.0, 0.26, 0.075, 0.12, 0.01, 0.075, colorgrey2);
-
- makercubenobtm(-0.05, 0.2, 0.075, 0.01, 0.07, 0.01, colorgrey2);
- makercubenobtm(0.05, 0.2, 0.075, 0.01, 0.07, 0.01, colorgrey2);
-
- makercube(0.0, 0.28, 0.075, 0.02, 0.02, 0.1, colorgrey1);
- makercube(-0.05, 0.28, 0.075, 0.02, 0.02, 0.1, colorgrey1);
- makercube(0.05, 0.28, 0.075, 0.02, 0.02, 0.1, colorgrey1);
- makercube(-0.1, 0.28, 0.075, 0.02, 0.02, 0.1, colorgrey1);
- makercube(0.1, 0.28, 0.075, 0.02, 0.02, 0.1, colorgrey1);
-
- makercube(0.0, 0.28, 0.05, 0.021, 0.021, 0.02, colorred);
- makercube(-0.05, 0.28, 0.05, 0.021, 0.021, 0.02, colorred);
- makercube(0.05, 0.28, 0.05, 0.021, 0.021, 0.02, colorred);
- makercube(-0.1, 0.28, 0.05, 0.021, 0.021, 0.02, colorred);
- makercube(0.1, 0.28, 0.05, 0.021, 0.021, 0.02, colorred);
-
- glEndList();
- return(O);
- }
-
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeSlagLauncherTank()
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makeitPyr(11, colorwhite, -0.12, 0.075, 0.0, 0.075, 0.075, 0.18);
- makeitPyr(11, colorwhite, 0.12, 0.075, 0.0, 0.075, 0.075, 0.18);
-
- makercubenobtm(0.0, 0.15, 0.0, 0.15, 0.03, 0.225, colorwhite);
-
- makercube(0.0, 0.26, 0.075, 0.12, 0.01, 0.075, colorgrey2);
-
- makercubenobtm(-0.05, 0.2, 0.075, 0.01, 0.07, 0.01, colorwhite);
- makercubenobtm(0.05, 0.2, 0.075, 0.01, 0.07, 0.01, colorwhite);
-
- makercube(0.0, 0.28, 0.075, 0.02, 0.02, 0.1, colorwhite);
- makercube(-0.05, 0.28, 0.075, 0.02, 0.02, 0.1, colorwhite);
- makercube(0.05, 0.28, 0.075, 0.02, 0.02, 0.1, colorwhite);
- makercube(-0.1, 0.28, 0.075, 0.02, 0.02, 0.1, colorwhite);
- makercube(0.1, 0.28, 0.075, 0.02, 0.02, 0.1, colorwhite);
-
- makercube(0.0, 0.28, 0.05, 0.021, 0.021, 0.02, colorwhite);
- makercube(-0.05, 0.28, 0.05, 0.021, 0.021, 0.02, colorwhite);
- makercube(0.05, 0.28, 0.05, 0.021, 0.021, 0.02, colorwhite);
- makercube(-0.1, 0.28, 0.05, 0.021, 0.021, 0.02, colorwhite);
- makercube(0.1, 0.28, 0.05, 0.021, 0.021, 0.02, colorwhite);
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* create object for an operational maser tank */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeMaserTank()
- {
- GLuint O;
-
- /**********************/
- /* maser tank support */
- /**********************/
-
- float support1[8][3] = {
- -0.1, 1.8, -1.3,
- -0.1, 1.2, 0.0,
- 0.1, 1.2, 0.0,
- 0.1, 1.8, -1.3,
- 0.1, 1.8, -1.7,
- 0.1, 1.2, -0.4,
- -0.1, 1.2, -0.4,
- -0.1, 1.8, -1.7 };
-
- float support2[8][3] = {
- -0.1, 2.5, -0.6,
- -0.1, 1.8, -1.3,
- 0.1, 1.8, -1.3,
- 0.1, 2.5, -0.6,
- 0.1, 2.5, -1.0,
- 0.1, 1.8, -1.7,
- -0.1, 1.8, -1.7,
- -0.1, 2.5, -1.0 };
-
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makercubenobtm(-0.8, 0.5, 0.0, 0.5, 0.5, 1.2, colorblue);
- makercubenobtm( 0.8, 0.5, 0.0, 0.5, 0.5, 1.2, colorblue);
-
- makercubenobtm( 0.0, 1.0, 0.0, 1.1, 0.2, 1.75, colorgrey2);
- makercubenobtm( 0.0, 1.0, -0.5, 0.5, 0.3, 0.5, colorwhite);
- makercube(0.0, 1.5, 1.25, 1.1, 0.3, 0.5, colorgrey3);
-
- makercube(0.0, 1.5, 1.752, 0.6, 0.1, 0.01, colorblack);
-
- makercube(0.0, 2.5, 0.0, 0.4, 0.4, 0.1, colorwhite);
- makercube(0.0, 2.5, -0.8, 0.2, 0.2, 0.91, colorblue);
-
- glColor3fv(colorgrey1);
-
- glBegin(GL_QUAD_STRIP);
- glVertex3fv(support1[0]);glVertex3fv(support1[1]);glVertex3fv(support1[3]);glVertex3fv(support1[2]);
- glVertex3fv(support1[4]);glVertex3fv(support1[5]);
- glVertex3fv(support1[7]);glVertex3fv(support1[6]);
- glVertex3fv(support1[0]);glVertex3fv(support1[1]);
- glEnd();
-
- glBegin(GL_QUAD_STRIP);
- glVertex3fv(support2[0]);glVertex3fv(support2[1]);glVertex3fv(support2[3]);glVertex3fv(support2[2]);
- glVertex3fv(support2[4]);glVertex3fv(support2[5]);
- glVertex3fv(support2[7]);glVertex3fv(support2[6]);
- glVertex3fv(support2[0]);glVertex3fv(support2[1]);
- glEnd();
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* create object for melting maser tank */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeSlagMaserTank()
- {
- GLuint O;
-
- /**********************/
- /* maser tank support */
- /**********************/
-
- float support1[8][3] = {
- -0.1, 1.8, -1.3,
- -0.1, 1.2, 0.0,
- 0.1, 1.2, 0.0,
- 0.1, 1.8, -1.3,
- 0.1, 1.8, -1.7,
- 0.1, 1.2, -0.4,
- -0.1, 1.2, -0.4,
- -0.1, 1.8, -1.7 };
-
- float support2[8][3] = {
- -0.1, 2.5, -0.6,
- -0.1, 1.8, -1.3,
- 0.1, 1.8, -1.3,
- 0.1, 2.5, -0.6,
- 0.1, 2.5, -1.0,
- 0.1, 1.8, -1.7,
- -0.1, 1.8, -1.7,
- -0.1, 2.5, -1.0 };
-
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makercubenobtm( -0.8, 0.5, 0, 0.5,0.5,1.2, colorwhite);
- makercubenobtm(0.8, 0.5 ,0, 0.5,0.5,1.2, colorwhite);
-
- makercubenobtm( 0, 1, 0, 1.1, 0.2, 1.75, colorwhite);
- makercubenobtm( 0, 1, -.5, .5, 0.3, .5, colorwhite);
- makercube(0.0, 1.5, 1.25, 1.1, 0.3, 0.5, colorwhite);
-
- makercube(0.0, 1.5, 1.751, 0.6, 0.1, 0.01, colorwhite);
-
- makercube(0.0, 2.5, 0.0, 0.4, 0.4, 0.1, colorwhite);
- makercube(0.0, 2.5, -0.8, 0.2, 0.2, 0.91, colorwhite);
-
- glColor3fv(colorwhite);
-
- glBegin(GL_QUAD_STRIP);
- glVertex3fv(support1[0]);glVertex3fv(support1[1]);glVertex3fv(support1[3]);glVertex3fv(support1[2]);
- glVertex3fv(support1[4]);glVertex3fv(support1[5]);
- glVertex3fv(support1[7]);glVertex3fv(support1[6]);
- glVertex3fv(support1[0]);glVertex3fv(support1[1]);
- glEnd();
-
- glBegin(GL_QUAD_STRIP);
- glVertex3fv(support2[0]);glVertex3fv(support2[1]);glVertex3fv(support2[3]);glVertex3fv(support2[2]);
- glVertex3fv(support2[4]);glVertex3fv(support2[5]);
- glVertex3fv(support2[7]);glVertex3fv(support2[6]);
- glVertex3fv(support2[0]);glVertex3fv(support2[1]);
- glEnd();
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* create object for an operational helicopter */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeHelo()
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makercube(0.0, 0.0, 0.0, 0.1, 0.1, 0.2, colorgrey2);
- makercube(0.0, -0.0375, -0.225, 0.1, 0.0625, 0.025, colorgrey2);
-
- makercubenobtm( -0.05, +0.0625, -0.2, 0.025, 0.025, 0.025, colorblack);
- makercubenobtm( 0.05, +0.0625, -0.2, 0.025, 0.025, 0.025, colorblack);
-
- makercube(0.0, 0.0, 0.3, 0.0375, 0.0375, 0.1, colorgrey1);
- makercubenobtmnotop( 0.0, 0.125, 0.0, 0.025, 0.05, 0.025, colorgrey1);
-
- /**************/
- /* draw skids */
- /**************/
-
- makercube( 0.075, -0.2, 0.0, 0.025, 0.0125, 0.175, colorwhite);
- makercube(-0.075, -0.2, 0.0, 0.025, 0.0125, 0.175, colorwhite);
-
- makercubenobtm( 0.075, -0.15, 0.025, 0.0125, 0.05, 0.05, colorgrey1);
- makercubenobtm( -0.075, -0.15, 0.025, 0.0125, 0.05, 0.05, colorgrey1);
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* create object for melting helicopter */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeSlagHelo()
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makercube(0.0, 0.0, 0.0, 0.1, 0.1, 0.2, colorwhite);
- makercube(0.0, -0.0375, -0.225, 0.1, 0.0625, 0.025, colorwhite);
-
- makercubenobtm( -0.05, +0.0625, -0.2, 0.025, 0.025, 0.025,colorwhite);
- makercubenobtm( 0.05, +0.0625, -0.2, 0.025, 0.025, 0.025, colorwhite);
-
- makercube(0.0, 0.0, 0.3, 0.0375, 0.0375, 0.1, colorwhite);
- makercubenobtmnotop( 0.0, 0.125, 0.0, 0.025, 0.05, 0.025, colorwhite);
-
- /**************/
- /* draw skids */
- /**************/
-
- makercube( 0.075, -0.2, 0.0, 0.025, 0.0125, 0.175, colorwhite);
- makercube(-0.075, -0.2, 0.0, 0.025, 0.0125, 0.175, colorwhite);
-
- makercubenobtm( 0.075, -0.15, 0.025, 0.0125, 0.05, 0.05, colorwhite);
- makercubenobtm(-0.075, -0.15, 0.025, 0.0125, 0.05, 0.05, colorwhite);
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* create object for main rotor of the helicopters */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeBigRotor()
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makercube(0.0, 0.175, 0.0, 0.025, 0.01, 0.3, colorwhite);
- makercube(0.0, 0.175, 0.0, 0.3, 0.01, 0.025, colorwhite);
-
- glEndList();
- return(O);
- }
-
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* create object for small rotor of the helicopters */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeSmallRotor()
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makercube(0.0, 0.0, 0.0, 0.0025, 0.15, 0.02, colorwhite);
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* create object for propeller for bomber */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makePropeller()
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makercube(0.0, 0.0, 0.0, 0.005, 0.05, 0.001, colorwhite);
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* make bomber body */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeAirplaneBody()
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- /*************/
- /* draw body */
- /*************/
-
- makercube(0.0, 0.0, 0.0, 0.03, 0.03, 0.14, colorwhite);
-
- glPushMatrix();
- glTranslatef(0, 0, -0.14);
- glRotatef(-90, 1, 0, 0);
- makeitPyr(1, colorwhite, 0.0, 0.08, 0.0, 0.03, 0.08, 0.03);
- glPopMatrix();
-
- /*************/
- /* draw tail */
- /*************/
-
- makercube(0.0, 0.07, 0.11, 0.002, 0.04 ,0.02, colorwhite);
-
- makeitPyr(1, colorwhite, 0.0, 0.03, 0.09, 0.002, 0.08, 0.02);
-
- /**************/
- /* draw wings */
- /**************/
-
- makercube(0.0, 0.0, -0.01, 0.16, 0.004, 0.02, colorgrey3);
-
- glPushMatrix();
- glTranslatef(0, 0, -0.03);
- glRotatef(-90,1, 0, 0);
- makeitPyr(1, colorgrey2, 0.0, 0.03, 0, 0.16, 0.03, 0.004);
- glPopMatrix();
-
- makercube(0.0, 0.0, 0.11, 0.08, 0.004, 0.015, colorgrey3);
-
- glPushMatrix();
- glTranslatef(0, 0, 0.095);
- glRotatef(-90, 1, 0, 0);
- makeitPyr(1, colorgrey2, 0.0, 0.02, 0.0, 0.08, 0.02, 0.004);
- glPopMatrix();
-
- makercube(-0.09, -0.004-0.01, -0.07+0.02, 0.01, 0.01, 0.02, colorgrey1);
-
- makercube( 0.09, -0.004-0.01, -0.07+0.02, 0.01, 0.01, 0.02, colorgrey1);
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* make fighter body */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeFighterBody()
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- /*************/
- /* draw body */
- /*************/
-
- makercube(0.0, 0.0, 0.0, 0.03, 0.03, 0.14, colorwhite);
-
- glPushMatrix();
- glTranslatef(0, 0, -0.14);
- glRotatef(-90, 1, 0, 0);
- makeitPyr(1, colorwhite, 0.0, 0.08, 0.0, 0.03, 0.08, 0.03);
- glPopMatrix();
-
- /*************/
- /* draw tail */
- /*************/
-
- glPushMatrix();
- glTranslatef(-0.05, 0.05, 0.11);
- glRotatef(45, 0, 0, 1);
- makercube(0.0, 0, 0, 0.002, 0.04 ,0.02, colorgrey3);
- glPopMatrix();
-
- glPushMatrix();
- glTranslatef(0.05, 0.05, 0.11);
- glRotatef(-45, 0, 0, 1);
- makercube(0.0, 0, 0, 0.002, 0.04 ,0.02, colorgrey3);
- glPopMatrix();
-
-
- /**************/
- /* draw wings */
- /**************/
-
- glPushMatrix();
- glTranslatef(0, 0, 0.03);
- glRotatef(90, 1, 0, 0);
- makeitPyr(1, colorgrey3, 0.0, 0.01, 0, 0.16, 0.085, 0.004);
- glPopMatrix();
-
- glPushMatrix();
- glTranslatef(0, 0, 0.03);
- glRotatef(-90, 1, 0, 0);
- makeitPyr(1, colorgrey3, 0.0, 0.2, 0, 0.1, 0.04, 0.004);
- glPopMatrix();
-
-
- makercube(-0.09, -0.004-0.01, 0.02, 0.01, 0.01, 0.04, colorred);
-
- makercube( 0.09, -0.004-0.01, 0.02, 0.01, 0.01, 0.04, colorred);
-
- glEndList();
- return(O);
- }
-
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* create object for Googelon's leg */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeLeg()
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makercube( 0.0, PLANEY+0.2, 0.0, 0.1, 0.2, 0.1, colorred);
- makercube( 0.0, PLANEY+0.06, 0.17, 0.1, 0.06, 0.08, colorred);
- makercube( 0.05, PLANEY+0.05, 0.25, 0.03, 0.04, 0.05, colorwhite);
- makercube(-0.05, PLANEY+0.05, 0.25, 0.03, 0.04, 0.05, colorwhite);
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* create object for Googelon's head */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeHead()
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makercube(0.0, PLANEY+1.15, 0.0, 0.22, 0.15, 0.1, colorred);
- makercube(0.0, PLANEY+1.15, -0.1, 0.1, 0.1, 0.1, colorred);
-
- /**********/
- /* pupils */
- /**********/
-
- makercube( 0.15, PLANEY+1.21, 0.1, 0.03, 0.03, 0.06, colorblack);
- makercube(-0.15, PLANEY+1.21, 0.1, 0.03, 0.03, 0.06, colorblack);
-
- /********/
- /* eyes */
- /********/
-
- makercube( 0.15, PLANEY+1.20, 0.1, 0.06, 0.06, 0.05, colorwhite);
- makercube(-0.15, PLANEY+1.20, 0.1, 0.06, 0.06, 0.05, colorwhite);
-
-
- glEndList();
- return(O);
- }
-
-
- GLuint makeSimpleHead()
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makercubenobtm(0.0, PLANEY+1.15, 0.0, 0.22, 0.15, 0.1, colorred);
- makercubeTopBack(0.0, PLANEY+1.15, -0.1, 0.1, 0.1, 0.1, colorred);
-
- /********/
- /* eyes */
- /********/
-
- makercubenobtm( 0.15, PLANEY+1.20, 0.1, 0.06, 0.06, 0.05, colorwhite);
- makercubenobtm(-0.15, PLANEY+1.20, 0.1, 0.06, 0.06, 0.05, colorwhite);
-
- /**********/
- /* pupils */
- /**********/
-
- makercubenobtm( 0.15, PLANEY+1.21, 0.1, 0.03, 0.03, 0.06, colorblack);
- makercubenobtm(-0.15, PLANEY+1.21, 0.1, 0.03, 0.03, 0.06, colorblack);
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* create object for Googelon's tail */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeTail()
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makercube(0.0, PLANEY+0.23, -0.2, 0.1, 0.15, 0.2, colorred);
- makercube(0.0, PLANEY+0.13, -0.35, 0.1, 0.1, 0.15, colorred);
- makeitPyr(2, colorred, 0, PLANEY+0.13, -0.6, 0.1, 0.1, 0.1);
-
- /****************/
- /* dorsal spine */
- /****************/
-
- makercubenobtm(0.0, PLANEY+0.4, -0.20, 0.02, 0.06, 0.08, colorwhite);
- makercube( 0.0, PLANEY+0.7, -0.19, 0.02, 0.06, 0.07, colorwhite);
-
- glEndList();
- return(O);
- }
-
- GLuint makeSimpleTail()
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makercubenobtm(0.0, PLANEY+0.23, -0.2, 0.1, 0.15, 0.2, colorred);
-
- /****************/
- /* dorsal spine */
- /****************/
-
- makercubenobtm(0.0, PLANEY+0.4, -0.20, 0.02, 0.06, 0.08, colorwhite);
- makercube( 0.0, PLANEY+0.7, -0.19, 0.02, 0.06, 0.07, colorwhite);
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* create object for an Googelon's body */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeBody()
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makercube( 0.0, PLANEY+0.5, 0.0, 0.2, 0.3, 0.2, colorred);
- makercubenobtm(0.0, PLANEY+0.9, 0.0, 0.15, 0.2, 0.15, colorred);
-
- glEndList();
- return(O);
- }
-
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* create object for flutter's head */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeFlutterHead()
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makercube( 0.0, PLANEY+1.15, 0.05, 0.1, 0.1, 0.05, colorbrown);
- makercube( 0.07, PLANEY+1.23, 0.11, 0.02, 0.02, 0.02, colorblack);
- makercube(-0.07, PLANEY+1.23, 0.11, 0.02, 0.02, 0.02, colorblack);
- makercube( 0.07, PLANEY+1.23, 0.08, 0.04, 0.04, 0.04, colorwhite);
- makercube(-0.07, PLANEY+1.23, 0.08, 0.04, 0.04, 0.04, colorwhite);
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeFlutterShadow()
- {
- GLuint O;
-
- /********************/
- /* flutter's shadow */
- /********************/
-
- float flutshad1[3] = { 0.1, SHADOWS, -0.1};
- float flutshad2[3] = {-0.1, SHADOWS, -0.1};
- float flutshad3[3] = { 0.1, SHADOWS, 0.1};
- float flutshad4[3] = {-0.1, SHADOWS, 0.1};
- float flutshad5[3] = { 0, SHADOWS, -0.3};
- float flutshad6[3] = {0.25, SHADOWS, 0.5};
- float flutshad7[3] = {0.25, SHADOWS, -0.5};
- float flutshad8[3] = {-0.25, SHADOWS, -0.5};
- float flutshad9[3] = {-0.25, SHADOWS, 0.5};
- float flutshad10[3] = { 0.5, SHADOWS, 0.0};
- float flutshad11[3] = {-0.5, SHADOWS, 0.0};
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- glColor4fv(colorblack);
-
- drawShadow (0, 0, 0.1, 0.1);
-
- glBegin(GL_TRIANGLES);
- glVertex3fv(flutshad1);
- glVertex3fv(flutshad5);
- glVertex3fv(flutshad2);
-
- glVertex3fv(flutshad6);
- glVertex3fv(flutshad10);
- glVertex3fv(flutshad7);
-
- glVertex3fv(flutshad8);
- glVertex3fv(flutshad11);
- glVertex3fv(flutshad9);
- glEnd();
-
- glBegin(GL_QUADS);
- glVertex3fv(flutshad3);
- glVertex3fv(flutshad6);
- glVertex3fv(flutshad7);
- glVertex3fv(flutshad1);
-
- glVertex3fv(flutshad2);
- glVertex3fv(flutshad8);
- glVertex3fv(flutshad9);
- glVertex3fv(flutshad4);
- glEnd();
-
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeFlutterXMas()
- {
- float v[4];
-
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- glPushMatrix();
- glTranslatef(0, PLANEY+1.25, -0.1);
- glScalef(1.2, 0.45, 1.2);
- glColor3fv(colorwhite);
- v[0] = v[1] = v[2] = 0;
- v[3] = 0.14;
- andysphdraw(v, 4);
- glPopMatrix();
-
- glPushMatrix();
- glTranslatef(-0.15, PLANEY+1.45, -0.25);
- glScalef(0.15, 0.2, 0.15);
- drawClosedCone(healthGreen, healthGreen, 1);
- glPopMatrix();
-
- glPushMatrix();
- glTranslatef(-0.09, PLANEY+1.65, -0.06);
- glRotatef(.1*(1100), 1, 0, 0);
- glRotatef(.1*(450), 0, 0, 1);
- glScalef(0.04, 0.11, 0.1);
- drawClosedCone(healthGreen, healthGreen, 1);
- glPopMatrix();
-
- glColor3fv(colorwhite);
- v[0] = -0.15;
- v[1] = PLANEY+1.50;
- v[2] = -0.0;
- v[3] = 0.05;
- andysphdraw(v, 4);
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeFlutterWing1()
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makeitPyr(10, colorbrown, 0.25, 0, 0, 0.15, 0.03, 0.5);
- makeitPyr(7, colorbrown, 0.25, 0, 0, 0.25, 0.03, 0.5);
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeFlutterWing2()
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makeitPyr(9, colorbrown, -0.25, 0, 0, 0.15, 0.03, 0.5);
- makeitPyr(8, colorbrown, -0.25, 0, 0, 0.25, 0.03, 0.5);
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeFlutterBody()
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makercube(0.0, PLANEY+1.15, 0.0, 0.1, 0.08, 0.1, colorbrown);
-
- makeitPyr(2, coloryellow, 0.0, PLANEY+1.15, -0.2, 0.1, 0.1, 0.1);
-
- glEndList();
- return(O);
- }
-
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* create object for tech's body */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeTechsBody()
- {
- int sph;
- GLuint O;
- float sp[4];
-
- sph =3;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- glColor3fv(colorgrey1);
-
- sp[0] = sp[2] = 0;
- sp[1] = PLANEY+ 0.2;
- sp[3] = 0.15;
- andysphdraw(sp, sph);
-
- makercubenobtm(0, PLANEY+0.6, 0, 0.07, 0.5, 0.07, colorgrey1);
-
- makercube( 0, PLANEY+0.5, 0, 0.2, 0.05, 0.05, colorgrey3);
-
- makercube( 0.22, PLANEY+0.5, 0, 0.025, 0.2, 0.15, colorblack);
- makercube( 0.2, PLANEY+0.5, 0, 0.03, 0.25, 0.2, colorgrey2);
-
- makercube(-0.22, PLANEY+0.5, 0, 0.025, 0.2, 0.15, colorblack);
- makercube(-0.2, PLANEY+0.5, 0, 0.03, 0.25, 0.2, colorgrey2);
-
- glEndList();
- return(O);
- }
-
- GLuint makeTechsSimpleBody()
- {
- int sph;
- GLuint O;
- float sp[4];
-
- sph =3;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- glColor3fv(colorgrey1);
-
- sp[0] = sp[2] = 0;
- sp[1] = PLANEY+ 0.2;
- sp[3] = 0.15;
- andysphdraw(sp, sph);
-
- makercubeTopBack(0, PLANEY+0.6, 0, 0.07, 0.5, 0.07, colorgrey1);
- makercubeTopBack( 0, PLANEY+0.5, 0, 0.2, 0.05, 0.05, colorgrey3);
-
- makercubenobtm( 0.2, PLANEY+0.5, 0, 0.03, 0.25, 0.2, colorgrey2);
- makercubenobtm(-0.2, PLANEY+0.5, 0, 0.03, 0.25, 0.2, colorgrey2);
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeTechsHead()
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makercube(0, PLANEY+1.2, 0, 0.15, 0.15, 0.1, colorgrey3);
- makercube(0, PLANEY+1.2, 0.13, 0.06, 0.06, 0.04, colorblack);
- makercube(0, PLANEY+1.2, -0.15, 0.075, 0.11, 0.1, colorgrey2);
-
- glEndList();
- return(O);
- }
-
- GLuint makeTechsSimpleHead()
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makercube(0, PLANEY+1.2, 0, 0.15, 0.15, 0.1, colorgrey3);
- makercubenobtm(0, PLANEY+1.2, 0.13, 0.06, 0.06, 0.04, colorblack);
- makercubeTopBack(0, PLANEY+1.2, -0.15, 0.075, 0.11, 0.1, colorgrey2);
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeTechsShadow()
- {
- GLuint O;
- GLUquadricObj *qobj;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- glPushMatrix();
- glColor3fv(colorblack);
- glTranslatef(0, SHADOWS, 0);
- glRotatef(-90, 1, 0, 0);
-
- qobj = gluNewQuadric();
- gluDisk( qobj, 0., 0.13, 32, 1);
- gluDeleteQuadric(qobj);
-
- glPopMatrix();
-
- glColor4fv(colorblack);
-
- drawShadow (0, 0, 0.2, 0.05);
-
- drawShadow (0.2, 0, 0.03, 0.2);
- drawShadow (-0.2, 0, 0.03, 0.2);
-
- glEndList();
- return(O);
- }
-
-
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* draw intact power line tower */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makePowerTower()
- {
- GLuint O;
- GLfloat lineWidthNow;
- glGetFloatv(GL_LINE_WIDTH, &lineWidthNow);
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- drawTower(0, 0);
-
- glEndList();
-
- glLineWidth(lineWidthNow);
-
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeGenericWindows()
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- glColor3fv(colorblack);
-
- wzminus(-0.15, 0.6, -0.303, 0.05, 0.1);
- wzminus( 0.0, 0.6, -0.303, 0.05, 0.1);
- wzminus( 0.15, 0.6, -0.303, 0.05, 0.1);
- wzminus(-0.15, 0.3, -0.303, 0.05, 0.1);
- wzminus( 0.0, 0.3, -0.303, 0.05, 0.1);
- wzminus( 0.15, 0.3, -0.303, 0.05, 0.1);
-
- wzplus(-0.15, 0.6, 0.303, 0.05, 0.1);
- wzplus( 0.0, 0.6, 0.303, 0.05, 0.1);
- wzplus(-0.15, 0.3, 0.303, 0.05, 0.1);
- wzplus( 0.0, 0.3, 0.303, 0.05, 0.1);
-
- wxplus( 0.303, 0.6, -0.15, 0.1, 0.05);
- wxplus( 0.303, 0.6, 0.0, 0.1, 0.05);
- wxplus( 0.303, 0.6, 0.15, 0.1, 0.05);
-
- wxminus(-0.303, 0.6, -0.15, 0.1, 0.05);
- wxminus(-0.303, 0.6, 0.0, 0.1, 0.05);
- wxminus(-0.303, 0.6, 0.15, 0.1, 0.05);
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* draw high-rise building */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makebuilding1(int detail)
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makercubenobtmnotop( 0, .7, 0, .3, .7, .3, colorwhite);
- makercubenobtm( 0, 1.5, 0, .3, .1, .3, colorgrey1);
-
- if (detail > 0)
- {
- glColor3fv(colorblack);
- wzminus(-0.15, 1.2, -0.303, 0.05, 0.1);
- wzminus( 0.0, 1.2, -0.303, 0.05, 0.1);
- wzminus( 0.15, 1.2, -0.303, 0.05, 0.1);
- wzminus(-0.15, 0.9, -0.303, 0.05, 0.1);
- wzminus( 0.0, 0.9, -0.303, 0.05, 0.1);
- wzminus( 0.15, 0.9, -0.303, 0.05, 0.1);
- wzminus(-0.15, 0.6, -0.303, 0.05, 0.1);
- wzminus( 0.0, 0.6, -0.303, 0.05, 0.1);
- wzminus( 0.15, 0.6, -0.303, 0.05, 0.1);
- wzminus(-0.15, 0.3, -0.303, 0.05, 0.1);
- wzminus( 0.0, 0.3, -0.303, 0.05, 0.1);
- wzminus( 0.15, 0.3, -0.303, 0.05, 0.1);
-
- wzplus(-0.15, 1.2, 0.303, 0.05, 0.1);
- wzplus( 0.0, 1.2, 0.303, 0.05, 0.1);
- wzplus( 0.15, 1.2, 0.303, 0.05, 0.1);
- wzplus(-.15, 0.9, 0.303, 0.05, 0.1);
- wzplus( 0.0, 0.9, 0.303, 0.05, 0.1);
- wzplus( 0.15, 0.9, 0.303, 0.05, 0.1);
- wzplus(-0.15, 0.6, 0.303, 0.05, 0.1);
- wzplus( 0.0, 0.6, 0.303, 0.05, 0.1);
- wzplus( 0.15, 0.6, 0.303, 0.05, 0.1);
- wzplus(-0.15, 0.3, 0.303, 0.05, 0.1);
- wzplus( 0.0, 0.3, 0.303, 0.05, 0.1);
- wzplus( 0.15, 0.3, 0.303, 0.05, 0.1);
-
- wxplus(0.303, 0.6, -0.15, 0.1, 0.05);
- wxplus(0.303, 0.3, -0.15, 0.1, 0.05);
-
- wxminus(-0.303, 0.6, -0.15, 0.1, 0.05);
- wxminus(-0.303, 0.6, 0.0, 0.1, 0.05);
- wxminus(-0.303, 0.3, -0.15, 0.1, 0.05);
- wxminus(-0.303, 0.3, 0.0, 0.1, 0.05);
- }
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* draw generic beige building */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makebuilding2(int detail)
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makercubenobtm( 0.0, 0.4, 0.0, 0.3, 0.4, 0.3, colorbeige);
-
- if (detail > 0)
- {
- glColor3fv(colorblack);
-
- wzminus(-0.15, 0.6, -0.303, 0.05, 0.15);
- wzminus( 0.0, 0.6, -0.303, 0.05, 0.15);
- wzminus( 0.15, 0.6, -0.303, 0.05, 0.15);
-
- wzplus(-0.15, 0.6, 0.303, 0.05, 0.15);
- wzplus( 0.0, 0.6, 0.303, 0.05, 0.15);
- wzplus( 0.15, 0.6, 0.303, 0.05, 0.15);
-
- wxplus( 0.303, 0.6, -0.15, 0.15, 0.05);
- wxplus( 0.303, 0.6, 0.0, 0.15, 0.05);
- wxplus( 0.303, 0.6, 0.15, 0.15, 0.05);
-
- wxminus(-0.303, 0.6, -0.15, 0.15, 0.05);
- wxminus(-0.303, 0.6, 0.0, 0.15, 0.05);
- wxminus(-0.303, 0.6, 0.15, 0.15, 0.05);
- }
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* draw generic suburban home */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makebuilding5(int detail)
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makercubenobtmnotop( 0, .2, 0, .3, .2, .35, colorwhite);
- makeitPyr(1, colorgrey2, 0, .5, 0, .35, .1, .45);
- makercubenobtm( .2, .4, 0, .03, .2, .05, colorwhite);
-
- if (detail > 0)
- {
- glColor3fv(colorblack);
-
- wxminus(-0.303, 0.15, -0.15, 0.15, 0.05);
- wxplus( 0.303, 0.25, 0.15, 0.05, 0.05);
- wzminus(-0.15, 0.25, -0.352, 0.05, 0.05);
- wzminus( 0.0, 0.25, -0.352, 0.05, 0.05);
- wzplus( 0.15, 0.25, 0.352, 0.05, 0.05);
- }
-
- glEndList();
- return(O);
- }
-
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* draw granite monument */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makebuilding7()
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makeitPyr(3, colorgrey2, 0.0, 0.4, 0.0, 0.3, 0.4, 0.3);
-
- glEndList();
- return(O);
- }
-
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* draw water tower */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makebuilding9(int lowDetail)
- {
- GLuint O;
- GLUquadricObj *qobj;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
-
- glPushMatrix();
- glTranslatef(-0.3, 1, -0.3);
- glScalef(.3, .2, .3);
-
- if (lowDetail)
- drawClosedCylinder(colorgrey1, colorwhite, 1, -1);
- else
- drawClosedCylinder(colorgrey1, colorwhite, 1, 1);
-
- glPopMatrix();
-
- glPushMatrix();
- glTranslatef(-0.1, 0.5, -0.1);
- glScalef(0.1, 0.5, 0.1);
-
- if (lowDetail)
- drawClosedCylinder(colorgrey3, colorwhite, 1, -1);
- else
- drawClosedCylinder(colorgrey3, colorwhite, 1, 1);
- glPopMatrix();
-
- makercubenobtm(-0.22, 0.5, -0.22, 0.025, 0.5, 0.025, colorgrey2);
- makercubenobtm( 0.22, 0.5, -0.22, 0.025, 0.5, 0.025, colorgrey2);
- makercubenobtm(-0.22, 0.5, 0.22, 0.025, 0.5, 0.025, colorgrey2);
- makercubenobtm( 0.22, 0.5, 0.22, 0.025, 0.5, 0.025, colorgrey2);
-
- makercube(-0.2, 0.4, 0.0, 0.015, 0.015, 0.2, colorgrey3);
- makercube( 0.2, 0.4, 0.0, 0.015, 0.015, 0.2, colorgrey3);
- makercube( 0.0, 0.4, 0.2, 0.2, 0.015, 0.015, colorgrey3);
- makercube( 0.0, 0.4, -0.2, 0.2, 0.015, 0.015, colorgrey3);
-
- glPushMatrix();
- glColor3fv(colorblack);
- glRotatef(-90, 1, 0, 0);
-
- qobj = gluNewQuadric();
- gluDisk( qobj, 0., 0.3, 32, 1);
- gluDeleteQuadric(qobj);
-
- glPopMatrix();
-
- glEndList();
- return(O);
- }
-
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* draw construction */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makebuilding10()
- {
- GLuint O;
-
- /****************/
- /* construction */
- /****************/
-
- float cons1[3] = {-0.29, 0.1, -0.29};
- float cons2[3] = {-0.29, 0.8, -0.29};
- float cons3[3] = { 0.29, 0.1, -0.29};
- float cons4[3] = { 0.29, 0.8, -0.29};
- float cons5[3] = { 0.29, 0.1, 0.29};
- float cons6[3] = { 0.29, 0.8, 0.29};
- float cons7[3] = {-0.29, 0.1, 0.29};
- float cons8[3] = {-0.29, 0.8, 0.29};
-
- float cons9[3] = {-0.29, 0.45, -0.29};
- float cons10[3] ={-0.29, 0.45, 0.29};
- float cons11[3] ={ 0.29, 0.45, 0.29};
- float cons12[3] ={ 0.29, 0.45, -0.29};
-
- float cons13[3] ={ 0.0, 0.45, -0.29};
- float cons14[3] ={ 0.0, 0.45, 0.29};
- float cons15[3] ={ 0.0, 0.8, 0.29};
- float cons16[3] ={ 0.0, 0.8, -0.29};
-
- float cons17[3] ={-0.29, 0.45, 0.0};
- float cons18[3] ={ 0.29, 0.45, 0.0};
- float cons19[3] ={ 0.29, 0.8, 0.0};
- float cons20[3] ={-0.29, 0.8, 0.0};
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makercubenobtm( 0, .05, 0, .3, .05, .3, colorwhite);
-
- glColor3fv(colorgrey1);
- glLineWidth(2.01);
-
- glBegin(GL_LINES);
- glVertex3fv(cons1);
- glVertex3fv(cons2);
-
- glVertex3fv(cons3);
- glVertex3fv(cons4);
-
- glVertex3fv(cons5);
- glVertex3fv(cons6);
-
- glVertex3fv(cons7);
- glVertex3fv(cons8);
- glEnd();
-
-
- glBegin(GL_LINE_LOOP);
- glVertex3fv(cons2);
- glVertex3fv(cons8);
- glVertex3fv(cons6);
- glVertex3fv(cons4);
- glEnd();
-
- glBegin(GL_LINE_LOOP);
- glVertex3fv(cons9);
- glVertex3fv(cons10);
- glVertex3fv(cons11);
- glVertex3fv(cons12);
- glEnd();
-
- glBegin(GL_LINE_LOOP);
- glVertex3fv(cons13);
- glVertex3fv(cons14);
- glVertex3fv(cons15);
- glVertex3fv(cons16);
- glEnd();
-
- glBegin(GL_LINE_LOOP);
- glVertex3fv(cons17);
- glVertex3fv(cons18);
- glVertex3fv(cons19);
- glVertex3fv(cons20);
- glEnd();
-
- glEndList();
-
- return(O);
- }
-
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* draw factory */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makebuilding12(int detail)
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makercubenobtm( 0, .4, 0, .3, .4, .3, colorbrown);
- makercubenobtmnotop( 0, .5, 0.02, .302, .1, .3, colorblack);
-
- if (detail > 0)
- {
- glColor3fv(colorblack);
-
- wxplus(0.303, .15, -.15, .15, .05);
- wxminus(-0.303, .15, -.15, .15, .05);
- }
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* draw control tower */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makebuilding14()
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
- makercubenobtmnotop( 0, .55, 0, .15, .55, .15, colorbeige);
- makercubenobtm( 0, 1.55, 0, .3, .05, .3, colorbeige);
-
- makeitPyr(5, colorbrown, 0, 1.1, 0, .3, .4, .3);
- glEndList();
- return(O);
- }
-
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* draw end of city hall */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makebuilding19(int detail)
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makercubenobtmnotop( 0, .3, 0, .3, .3, .3, colorbrown);
- makeitPyr(4, colorbeige, 0, .7, 0, .3, .1, .3);
-
- if (detail > 0)
- {
- glColor3fv(colorblack);
-
- wxplus(.303, .4, -.15, .08, .05);
- wxplus(.303, .2, -.15, .08, .05);
- wxplus(.303, .4, +.15, .08, .05);
- wxplus(.303, .2, +.15, .08, .05);
-
- wxminus(-.303, .4, -.15, .08, .05);
- wxminus(-.303, .2, -.15, .08, .05);
- wxminus(-.303, .4, +.15, .08, .05);
- wxminus(-.303, .2, +.15, .08, .05);
- }
-
- glEndList();
- return(O);
- }
-
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* draw middle of city hall */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makebuilding20(int detail)
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makercubenobtmnotop( 0, .3, 0, .3, .3, .3, colorbrown);
- makeitPyr(4, colorbeige, 0, .7, 0, .3, .1, .3);
- makeitPyr(6, colorbeige, 0, .7, 0, .3, .1, .3);
-
- if (detail > 0)
- {
- glColor3fv(colorblack);
-
- wxplus(.303, .4, -.15, .08, .05);
- wxplus(.303, .2, -.15, .08, .05);
- wxplus(.303, .4, +.15, .08, .05);
- wxplus(.303, .2, +.15, .08, .05);
-
- wxminus(-.303, .4, -.15, .08, .05);
- wxminus(-.303, .2, -.15, .08, .05);
- wxminus(-.303, .4, +.15, .08, .05);
- wxminus(-.303, .2, +.15, .08, .05);
- }
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* draw front of city hall */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makebuilding21(int detail)
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makercubenobtmnotop( -.2, .3, 0, .1, .3, .3, colorbrown);
- makeitPyr(6, colorbeige, 0, .7, 0, .3, .1, .3);
- makercubenobtm( 0, .05, 0, .29, .05, .29, colorgrey1);
-
- if (detail > 0)
- {
- glColor3fv(colorblack);
-
- wxplus(-.098, .22, -.10, .12, .05);
- wxplus(-.098, .22, +.10, .12, .05);
-
- wxminus(-.303, .4, -.15, .08, .05);
- wxminus(-.303, .2, -.15, .08, .05);
- wxminus(-.303, .4, +.15, .08, .05);
- wxminus(-.303, .2, +.15, .08, .05);
- }
-
- makercubenobtmnotop( 0.25, .3, 0.25, .03, .3, .03, colorwhite);
- makercubenobtmnotop( 0.25, .3, -0.25, .03, .3, .03, colorwhite);
-
- makercubenobtmnotop( 0.0, .3, 0.25, .03, .3, .03, colorwhite);
- makercubenobtmnotop( 0.0, .3, -0.25, .03, .3, .03, colorwhite);
-
- glEndList();
- return(O);
- }
-
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* draw maser emplacement */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makebuilding31()
- {
- GLUquadricObj *qobj;
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- makercubenobtm( 0, .095, 0, .36, .095, .36, colorgrey1);
-
- makercubenobtm( .35, .1, .35, .03, .1, .03, colorblue);
- makercubenobtm( -.35, .1, .35, .03, .1, .03, colorblue);
- makercubenobtm( .35, .1, -.35, .03, .1, .03, colorblue);
- makercubenobtm( -.35, .1, -.35, .03, .1, .03, colorblue);
-
- glColor3fv(colorwhite);
-
- glPushMatrix();
- glTranslatef(0, .2, 0);
- glRotatef(-90, 1, 0, 0);
-
- qobj = gluNewQuadric();
- gluDisk( qobj, 0., 0.3, 32, 1);
- gluDeleteQuadric(qobj);
- glPopMatrix();
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* draw helicopter pad */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makebuilding32()
- {
- GLUquadricObj *qobj;
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
-
- makercubenobtm( 0, .095, 0, .36, .095, .36, colorgrey1);
-
- glColor3fv(coloryellow);
-
- glPushMatrix();
- glTranslatef(0, .2, 0);
- glRotatef(-90, 1, 0, 0);
-
- qobj = gluNewQuadric();
- gluDisk( qobj, 0., 0.3, 32, 1);
- gluDeleteQuadric(qobj);
- glPopMatrix();
-
- glColor3fv(colorgrey1);
-
- glPushMatrix();
- glTranslatef(0, .21, 0);
- glRotatef(-90, 1, 0, 0);
-
- qobj = gluNewQuadric();
- gluDisk( qobj, 0., 0.2, 32, 1);
- gluDeleteQuadric(qobj);
- glPopMatrix();
-
- glEndList();
- return(O);
- }
-
-
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* create object for strip mall store */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeStrip1(int detail)
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- drawBuilding15(colorwhite, colorred, detail);
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* create object for strip mall store */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeStrip2(int detail)
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- drawBuilding15(colorgrey2, coloryellow, detail);
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* create object for strip mall store */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeStrip3(int detail)
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- drawBuilding15(colorbeige, colorblue, detail);
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
- /* make object for battalion title */
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeTitles(int detail)
- {
- GLuint O;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- /*****/
- /* b */
- /*****/
-
- makerlogo(-3.5, 3.5, 0, .35, .1, .2, detail, 0, 1);
- makerlogo(-3.75, 3.75, 0, .1, .25, .2, detail, 0, 1);
- makerlogo(-3.25, 3.25, 0, .1, .25, .2, detail, 0, 1);
- makerlogo(-3.5, 3., 0, .35, .1, .2, detail, 0, 1);
-
- /*****/
- /* a */
- /*****/
-
- makerlogo(-2.5, 3.5, 0, .35, .1, .2, detail, 0, 1);
- makerlogo(-2.75, 3.25, 0, .1, .3, .2, detail, 0, 1);
- makerlogo(-2.25, 3.25, 0, .1, .3, .2, detail, 0, 1);
- makerlogo(-2.65, 3., 0, .20, .1, .2, detail, 0, 1);
-
- /*****/
- /* t */
- /*****/
-
- makerlogo(-1.5, 3.5, 0, .3, .1, .2, detail, 0, 1);
- makerlogo(-1.75, 3.5, 0, .1, .6, .2, detail, 0, 1);
-
- /*****/
- /* t */
- /*****/
-
- makerlogo(-0.5, 3.5, 0, .3, .1, .2, detail, 0, 1);
- makerlogo(-0.75, 3.5, 0, .1, .6, .2, detail, 0, 1);
-
- /*****/
- /* a */
- /*****/
-
- makerlogo(0.5, 3.5, 0, .35, .1, .2, detail, 1, 0);
- makerlogo(0.25, 3.25, 0, .1, .3, .2, detail, 1, 0);
- makerlogo(0.75, 3.25, 0, .1, .3, .2, detail, 1, 0);
- makerlogo(0.35, 3., 0, .20, .1, .2, detail, 1, 0);
-
- /*****/
- /* l */
- /*****/
-
- makerlogo(1.25, 3.5, 0, .1, .6, .2, detail, 1, 0);
-
- /*****/
- /* i */
- /*****/
-
- makerlogo(1.75, 3.25, 0, .1, .35, .2, detail, 1, 0);
-
- /*****/
- /* o */
- /*****/
-
- makerlogo(2.5, 3.5, 0, .35, .1, .2, detail, 1, 0);
- makerlogo(2.25, 3.25, 0, .1, .3, .2, detail, 1, 0);
- makerlogo(2.75, 3.25, 0, .1, .3, .2, detail, 1, 0);
- makerlogo(2.5, 3, 0, .35, .1, .2, detail, 1, 0);
-
- /*****/
- /* n */
- /*****/
-
- makerlogo(3.5, 3.5, 0, .35, .1, .2, detail, 1, 0);
- makerlogo(3.25, 3.25, 0, .1, .35, .2, detail, 1, 0);
- makerlogo(3.75, 3.25, 0, .1, .35, .2, detail, 1, 0);
-
- glEndList();
- return(O);
- }
-
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeBigPlane()
- {
- GLuint O;
-
- /*******************************/
- /* the battlefield in map view */
- /*******************************/
-
- float Bplane[4][3] = {
- - 200, PLANEY, - 200,
- - 200, PLANEY, + 200,
- + 200, PLANEY, + 200,
- + 200, PLANEY, - 200};
-
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- glBegin(GL_QUADS);
- glVertex3fv(Bplane[0]);
- glVertex3fv(Bplane[1]);
- glVertex3fv(Bplane[2]);
- glVertex3fv(Bplane[3]);
- glEnd();
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeLowDPlane()
- {
- GLuint O;
-
- /********************/
- /* the battlefield */
- /********************/
-
- float Gplane[4][3] = {
- - PLANESIZE, PLANEY, - PLANESIZE,
- - PLANESIZE, PLANEY, + PLANESIZE,
- + PLANESIZE, PLANEY, + PLANESIZE,
- + PLANESIZE, PLANEY, - PLANESIZE};
-
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
-
- /* trying to replace this with 2 triangular polygons for
- mac mesa generates some very wacky results */
-
- glBegin(GL_QUADS);
- glVertex3fv(Gplane[0]);
- glVertex3fv(Gplane[1]);
- glVertex3fv(Gplane[2]);
- glVertex3fv(Gplane[3]);
- glEnd();
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeHighDPlane()
- {
- GLuint O;
- float ratio;
- register int i, j;
- float plane[4][3];
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- ratio = PLANESIZE * 0.1;
- plane[0][1] = plane[1][1] = plane[2][1] = plane[3][1] = PLANEY;
-
- for (i=0;i<=19;i++)
- for(j=0;j<=19;j++)
- {
- plane[0][0] = plane[1][0] = (i*ratio) - PLANESIZE;
- plane[2][0] = plane[3][0] = ((i+1)*ratio) - PLANESIZE;
-
- plane[0][2] = plane[3][2] = (j*ratio) - PLANESIZE;
- plane[1][2] = plane[2][2] = ((j+1)*ratio) - PLANESIZE;
-
- glBegin(GL_QUADS);
- glVertex3fv(plane[0]);
- glVertex3fv(plane[1]);
- glVertex3fv(plane[2]);
- glVertex3fv(plane[3]);
- glEnd();
- }
-
- glEndList();
- return(O);
- }
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makePlaneDots(int detail)
- {
- GLuint O;
- float grass1[3], grass2[3], grass3[3], grass4[3];
- register int j, i;
-
- grass1[1] = grass2[1] = grass3[1] = grass4[1] = PLANEY;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- if (detail == 0)
- {
- glBegin(GL_POINTS);
- for(i=-PLANESIZE+1; i<=PLANESIZE; i+=1)
- {
- grass1[0] = i;
-
- for(j=-PLANESIZE + 1; j <= PLANESIZE; j += 1)
- {
- grass1[2] = j;
-
- glVertex3fv(grass1); /* a single point */
- }
- }
- }
- else
- {
- glBegin(GL_LINES);
- for(i=-PLANESIZE+1; i<=PLANESIZE; i+=1)
- {
- grass1[0] = grass3[0] = i - 0.015;
- grass2[0] = grass4[0] = i + 0.015;
-
- for(j=-PLANESIZE + 1; j <= PLANESIZE; j += 1)
- {
- grass1[2] = grass4[2] = j - 0.015;
- grass2[2] = grass3[2] = j + 0.015;
-
- glVertex3fv(grass1);
- glVertex3fv(grass2);
-
- glVertex3fv(grass3);
- glVertex3fv(grass4);
- }
- }
- }
- glEnd();
-
- glEndList();
- return(O);
- }
-
-
-
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- GLuint makeRoundTreeShadow()
- {
- GLuint O;
- GLUquadricObj *qobj;
-
- O = glGenLists(1);
- glNewList(O, GL_COMPILE);
-
- glRotatef(-90, 1, 0, 0);
-
- qobj = gluNewQuadric();
- gluDisk( qobj, 0., 0.3, 32, 1);
- gluDeleteQuadric(qobj);
-
- glEndList();
- return(O);
- }
-
-